package Date_Calendar;

import java.util.Calendar;

public class include {
    public static void main(String[] args) {
        //一、
        // Data 类
        //1.Date() :
        //构造一个日期对象，直接输出Date类对象默认打印当前系统时间。
        //2.Date(long date) :
        //构造一个日期对象，时间为自 "1970-1-1-00：00：00GMT" 起至指定参数date的毫秒数所代表的日期。
        //测试方法在  Example1
        //二、
        //在Date类构造器的演示中可以看到，输出Date类对象默认打印当前系统时间，而且它的格式是固定的。
        //这时，如果想改变日期默认的格式，就需要引入SimpleDateFormat类，见名知意，这个类可以对日期进行格式化
        //DateFormat 的子类是  SimpleDateFormat
        //SimpleDateFormat(String pattern)  通过一个指定的模板构造对象
        //测试方法  Example2

        //Date类补充
        //除了上文中演示的Date类对象的两个构造器外，我们还可以通过方法来创建Date类对象——即通过SimpleDateFormat类的parse方法。
        //使用该方法需要先利用带参构造创建一个SimpleDateFormat类对象，然后通过创建好的对象调用parse方法；
        //传入一个字符串，该字符串中包含了你想保存的日期信息，eg : "2023.3.11 星期日"，
        //注意：传入的字符串的格式，必须与你创建SimpleDateFormat对象时传入的字符串格式一致；
        //然后使用Date对象来作接收，eg : Date date = sdf.parse(str_0);。
        //注意，使用该方法，IDEA会报编译器异常ParseException，使用throws关键字抛出即可。
        //演示 Example3
        //Date类：
        //long getTime() :
        //该方法可以将日期对象转换成对应时间的毫秒值。

        //三、
        //Calendar类可以看作是对Date类的一个升级，用于操作日历相关字段。
        //同Date类不同的是，Calendar类属于抽象类，不可被实例化。
        //因此，获取Calendar类的对象我们一般使用Calendar类的静态方法getInstance
        //测试方法  Example4

        //四、
        //Date和Calendar类都是在jdk版本很久以前存在的。
        //在使用时或多或少哦有一些问题（1.可变性 2.偏移性 3.格式化 4.线程安全性）
        //于是Java8引入了 LocalDate, LocalTime, LocalDateTime
        //Example5

        //五、
        //通过上面的演示我们可以看到，直接打印LocalDateTime对象，输出结果也是默认值。
        //如果我们想格式化它的输出内容，就需要用到DateTimeFormatter类，
        //DateTimeFormatter类与之前讲到的SimpleDateFormat类类似，在使用上也大同小异，
        //不同的地方在于，DateTimeFormatter类对象不能直接new出来（因为该类构造器为私有），而是要通过DateTimeFormatter类的ofPattern方法来获取实例
        //Example6

        //六、
        //对于LocalDateTime类的方法有很多，这里再简单介绍两个，剩下的可以在API文档中查找
        //plusDays(long daysToSubtract) 和 minusDays(long daysToSubtract)
        //daysToSubtract天 之后 和 之前 的 日子
        //Example7

        //七、
        //Instant类来表示时间戳，见名知意，Instant就是指瞬时时间，时间戳就是某一瞬时时间的特定值。
        //Instant类可以与Date类相互转化。
        //但是要获取Instant对象，需要用到Instant类的静态方法——now方法。
        //Example8
    }
}
